package 栈;

import java.util.Stack;

public class 有效的括号 {
    //使用栈解决
    public boolean isValid(String s){ //s = {()}
        int len = s.length();
        Stack<Character> stack = new Stack<>(); //存放括号的栈
        for(int i=0;i<len;++i){
            char c = s.charAt(i); //取到每一个单独的括号

            if('{' == c || '(' == c || '[' == c){ //左字符直接入栈
                stack.push(c);
            }else{ //右字符
                if(stack.isEmpty()) return false; //遇到右字符，如果栈是空的，直接退出
                Character top = stack.pop(); //拿到栈顶元素和右字符进行比较
                if('(' == top && ')' != c) return false;
                if('{' == top && '}' != c) return false;
                if('[' == top && ']' != c) return false;
            }
        }
        //最后判断栈是否为空
        return stack.isEmpty();
    }
}
